package fr.soat.agileconference2010.methodeschargees;

public class GrandHuitTestable {
  public boolean laisserPasser(Personne personne) {
    
    if (estPhysiquementCompatibleJeuxIntenses(personne)
        && estLegalementCompatibleJeuxIntenses(personne)) {
      facturer(personne);
      return true;
    }
    return false;
  }

  private boolean estLegalementCompatibleJeuxIntenses(Personne personne) {
    return estMineurAccompagne(personne) || estMajeur(personne);
  }

  private boolean estPhysiquementCompatibleJeuxIntenses(Personne personne) {
    return personne.getAge() > 12 && personne.getTaille() > 1.3
        && personne.estEnBonneSante();
  }

  private boolean estMajeur(Personne personne) {
    return personne.getAge() >= 18;
  }

  private boolean estMineurAccompagne(Personne personne) {
    return personne.getAge() < 18 && personne.estAccompagne();
  }

  private void facturer(Personne personne) {
  }

}
